Solving 10385 - Duathlon (Ternary search)
[and.git] / 567 - Risk / 567.cpp
blob9027d02b4d4d6be2356caa5eef7bc6d1e2efa027
1 using namespace std;
2 #include <algorithm>
3 #include <iostream>
4 #include <iterator>
5 #include <sstream>
6 #include <fstream>
7 #include <cassert>
8 #include <climits>
9 #include <cstdlib>
10 #include <cstring>
11 #include <string>
12 #include <cstdio>
13 #include <vector>
14 #include <cmath>
15 #include <queue>
16 #include <deque>
17 #include <stack>
18 #include <map>
19 #include <set>
21 #define D(x) cout << #x " is " << x << endl
23 int g[21][21];
25 int main(){
26 int C=1, len;
27 while (scanf("%d", &len)==1){
28 memset(g, 0x3F, sizeof g);
30 for (int i=1; i<20; ++i){
31 if (i > 1) scanf("%d", &len);
32 for (int t=len, x; t--; ){
33 scanf("%d", &x);
34 g[i][x] = g[x][i] = 1;
38 for (int k=1; k<=20; ++k)
39 for (int i=1; i<=20; ++i)
40 for (int j=1; j<=20; ++j)
41 g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
43 printf("Test Set #%d\n", C++);
44 int q;
45 for (scanf("%d", &q); q--; ){
46 int u, v;
47 scanf("%d %d", &u, &v);
48 printf("%2d to %2d: %d\n", u, v, g[u][v]);
50 puts("");
52 return 0;